package com.itshidu.game.entity;

import com.baomidou.mybatisplus.annotation.TableName;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;

import com.itshidu.game.utils.GameConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author Jack.Xia
 * @since 2019-12-01
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("g_hero")
public class Hero extends BaseEntity {

    private static final long serialVersionUID=2L;

    /**
     * 角色名字
     */
    private String name;

    /**
     * 等级
     */
    private Integer level=1;

    /**
     * 经验
     */
    private Integer exp=0;

    /**
     * 生命值
     */
    private Integer hp= GameConfig.INIT_HP;

    /**
     * 最大生命值
     */
    private Integer hpmax=GameConfig.INIT_HP;

    /**
     * 精气
     */
    private Integer mp = GameConfig.INIT_MP;

    /**
     * 最大精气
     */
    private Integer mpmax = GameConfig.INIT_MP;

    /**
     * 攻击力
     */
    private Integer atk = GameConfig.INIT_ATK;

    /**
     * 防御力
     */
    private Integer armor = GameConfig.INIT_ARMOR;

    /**
     * 命中
     */
    private Integer hit = GameConfig.INIT_HIT;

    /**
     * 闪避
     */
    private Integer dodge = GameConfig.INIT_DODGE;

    /**
     * 暴击几率
     */
    @TableField("critRate")
    private Integer critRate = GameConfig.INIT_CRIT_RATE;

    /**
     * 暴击效果
     */
    @TableField("critVal")
    private Integer critVal = GameConfig.INIT_CRIT_VAL;

    /**
     * 开始修炼的时间
     */
    @TableField("practiceStartTime")
    private Date practiceStartTime;

    /**
     * 状态（1正常，2修炼）
     */
    private Integer state=1;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 角色创建时间
     */
    private Date created;

    /**
     * 性别（男，女）
     */
    private String sex;

    /**
     * 活力
     */
    private Integer vigour = 0;

    /**
     * 最后一次领取活力的时间
     */
    @TableField("vigour_time")
    private Date vigourTime = new Date(0);

    /**
     * 灵活
     */
    private Integer agile = 0;

    /**
     * 未分配属性点
     */
    private Integer ap = 1;

    /**
     * 属性点：命中
     */
    @TableField("ap_hit")
    private Integer apHit = 0;

    /**
     * 属性点：闪避
     */
    @TableField("ap_dodge")
    private Integer apDodge = 0;

    /**
     * 属性点：敏捷
     */
    @TableField("ap_agile")
    private Integer apAgile = 0;

    /**
     * 属性点：暴击
     */
    @TableField("ap_crit_rate")
    private Integer apCritRate = 0;

    /**
     * 属性点：暴伤
     */
    @TableField("ap_crit_val")
    private Integer apCritVal = 0;




    private transient int _hp; //战斗中的HP
    private transient int _mp; //战斗中的MP

}
